package com.zy.cat.dao;

import java.util.List;
import java.util.Map;

import com.zy.cat.entity.resp.Pages;
import com.zy.cat.entity.resp.ResultPage;

 

public interface Dao<T> {
	
	/** 执行过程 **/
	public void callProcedure(Object obj,String table);
	/** 插入数据   默认insert id=insert **/
	public boolean insert(Object obj);
	/** 插入数据  默认insert id=table **/
	public boolean insert(Object obj,String table);
	/** 插入数据  默认insert id=insert **/
	public boolean insert(Map<String,Object> search);
	/** 插入数据  默认insert id=table **/
	public boolean insert(Map<String,Object> search,String table);
	/** 插入批量数据  默认insert id=table **/
	public boolean insertBatch(List<T> obj,String table);
	
	/** 删除数据  默认delete id=delete **/
	public boolean delete(Object obj);
	/** 删除数据  默认delete id=table **/
	public boolean delete(Object obj,String table);
	/** 删除数据  默认delete id=delete **/
	public boolean delete(Map<String,Object> search);
	/** 删除数据  默认delete id=table **/
	public boolean delete(Map<String,Object> search,String table);

	
	/** 修改数据  默认update id=update **/
	public boolean update(Object obj);
	/** 修改数据  默认update id=table **/
	public boolean update(Object obj,String table);
	/** 修改数据  默认update id=update **/
	public boolean update(Map<String,Object> search);
	/** 修改数据  默认update id=table **/
	public boolean update(Map<String,Object> search,String table);
	/** 修改批量数据 **/
	boolean update(List<T> list, String table);

 
	/** 查询数据 list不带分页信息    默认select id=list **/
	public List<T> list(Object obj);
	/** 查询数据 list不带分页信息   默认select id=table **/
	public List<T> list(Object obj,String table);
	/** 查询数据 list不带分页信息   默认select id=list **/
	public List<T> list(Map<String,Object> search);
	/** 查询数据 list不带分页信息   默认select id=table **/
	public List<T> list(Map<String,Object> search,String table);
	
	
	/** 查询数据 list不带分页信息    默认select id=list **/
	public List<T> list(Object obj,Pages pages);
	/** 查询数据 list不带分页信息   默认select id=table **/
	public List<T> list(Object obj,String table,Pages pages);
	/** 查询数据 list不带分页信息   默认select id=list **/
	public List<T> list(Map<String,Object> search,Pages pages);
	/** 查询数据 list不带分页信息   默认select id=table **/
	public List<T> list(Map<String,Object> search,String table,Pages pages);
	
	
	/** 查询数据  Map带分页信息  key=data:list数据信息    key= pages-->分页信息  默认select id=listAndPages **/
	public ResultPage<T> listAndPages(Object obj,Pages pages);
	/** 查询数据  Map带分页信息  key=data:list数据信息    key= pages-->分页信息  默认select id=table **/
	public ResultPage<T> listAndPages(Object obj,String table,Pages pages);
	/** 查询数据  Map带分页信息  key=data:list数据信息    key= pages-->分页信息    默认select id=listAndPages **/ 
	public ResultPage<T> listAndPages(Map<String,Object> search,Pages pages);
	/** 查询数据  Map带分页信息  key=data:list数据信息    key= pages-->分页信息    默认select id=table **/ 
	public ResultPage<T> listAndPages(Map<String,Object> search,String table,Pages pages);
	
	
	
//	/** 查询数据  Map带分页信息  key=data:list数据信息    key= pages-->分页信息  默认select id=listAndPages **/
//	public Map<String,Object> listAndPages(Object obj,Pages pages);
//	/** 查询数据  Map带分页信息  key=data:list数据信息    key= pages-->分页信息  默认select id=table **/
//	public Map<String,Object> listAndPages(Object obj,String table,Pages pages);
//	/** 查询数据  Map带分页信息  key=data:list数据信息    key= pages-->分页信息    默认select id=listAndPages **/ 
//	public Map<String,Object> listAndPages(Map<String,Object> search,Pages pages);
//	/** 查询数据  Map带分页信息  key=data:list数据信息    key= pages-->分页信息    默认select id=table **/ 
//	public Map<String,Object> listAndPages(Map<String,Object> search,String table,Pages pages);

	/** 查询数据   获取指定的一个用户信息  默认select id=selectOne **/
	public T selectOne(Object obj);
	/** 查询数据   获取指定的一个用户信息  默认select id=table **/
	public T selectOne(Object obj,String table);
	/** 查询数据   获取指定的一个用户信息  默认select id=selectOne **/
	public T selectOne(Map<String,Object> search);
	/** 查询数据   获取指定的一个用户信息  默认select id=table **/
	public T selectOne(Map<String,Object> search,String table);
}
